<?php

eval( ' function xoops_module_update_'.$mydirname.'( $module ) { return links_onupdate_base( $module , "'.$mydirname.'" ) ; } ' ) ;


if( ! function_exists( 'links_onupdate_base' ) ) {

	function links_onupdate_base( $module , $mydirname )
	{
		// transations on module update

		global $msgs ; // TODO :-D

		// for ICMS ?
		if (defined('ICMS_URL') && ini_get('max_execution_time') < 70) {
			ini_set('max_execution_time', 120);
		}

		require_once realpath(dirname(__FILE__)) . '/functions.php';

		// for Cube 2.1
		if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
			$root =& XCube_Root::getSingleton();
			$root->mDelegateManager->add( 'Legacy.Admin.Event.ModuleUpdate.' . ucfirst($mydirname) . '.Success', 'links_message_append_onupdate' ) ;
			$msgs = array() ;
		} else {
			if( ! is_array( $msgs ) ) $msgs = array() ;
		}

		$db =& Database::getInstance() ;
		$mid = $module->getVar('mid') ;

		//DB TABLES (write here ALTER TABLE etc. if necessary)

		// configs (Though I know it is not a recommended way...)
		$check_sql = "SHOW COLUMNS FROM " . $db->prefix("config") . " LIKE 'conf_title'";
		if (($result = $db->query($check_sql)) && ($myrow = $db->fetchArray($result)) && @$myrow['Type'] == 'varchar(30)') {
			$db->queryF("ALTER TABLE " . $db->prefix("config") . " MODIFY `conf_title` varchar(255) NOT NULL default '', MODIFY `conf_desc` varchar(255) NOT NULL default ''");
		}

		// TEMPLATES (all templates have been already removed by modulesadmin)
		$tplfile_handler =& xoops_gethandler( 'tplfile' ) ;
		$tpl_path = dirname(dirname(__FILE__)).'/templates' ;
		if( $handler = @opendir( $tpl_path . '/' ) ) {
			$tpl_files_arr = array('header.html', 'footer.html', 'category_tree.html', 'permission.html', 'mobile_block_links.html', 'mobile_header.html', 'mobile_footer.html', 'inc_comment.html', 'link.html');
			while( ( $file = readdir( $handler ) ) !== false ) {
				if( substr( $file , 0 , 1 ) == '.' ) continue ;
				if (!in_array($file, $tpl_files_arr)) {
					$tpl_files_arr[] = $file;
				}
			}
			closedir( $handler ) ;

			foreach ($tpl_files_arr as $file) {
				$file_path = $tpl_path . '/' . $file ;
				if( is_file( $file_path ) && in_array( strrchr( $file , '.' ) , array( '.html' , '.css' , '.js' ) ) ) {
					$mtime = intval( @filemtime( $file_path ) ) ;
					$tplfile =& $tplfile_handler->create() ;
					$tplfile->setVar( 'tpl_source' , file_get_contents( $file_path ) , true ) ;
					$tplfile->setVar( 'tpl_refid' , $mid ) ;
					$tplfile->setVar( 'tpl_tplset' , 'default' ) ;
					$tplfile->setVar( 'tpl_file' , $mydirname . '_' . $file ) ;
					$tplfile->setVar( 'tpl_desc' , '' , true ) ;
					$tplfile->setVar( 'tpl_module' , $mydirname ) ;
					$tplfile->setVar( 'tpl_lastmodified' , $mtime ) ;
					$tplfile->setVar( 'tpl_lastimported' , 0 ) ;
					$tplfile->setVar( 'tpl_type' , 'module' ) ;
					if( ! $tplfile_handler->insert( $tplfile ) ) {
						$msgs[] = '<span style="color:#ff0000;">ERROR: Could not insert template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> to the database.</span>';
					} else {
						$tplid = $tplfile->getVar( 'tpl_id' ) ;
						$msgs[] = 'Template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> added to the database. (ID: <b>'.$tplid.'</b>)';
						// generate compiled file
						include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php' ;
						include_once XOOPS_ROOT_PATH.'/class/template.php' ;
						if (! links_xoops_template_touch($tplid, $mydirname)) {
							$msgs[] = '<span style="color:#ff0000;">ERROR: Failed compiling template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b>.</span>';
						} else {
							$msgs[] = 'Template <b>'.htmlspecialchars($mydirname.'_'.$file).'</b> compiled.</span>';
						}
					}
				}
			}
		}
		include_once XOOPS_ROOT_PATH.'/class/xoopsblock.php' ;
		include_once XOOPS_ROOT_PATH.'/class/template.php' ;
		xoops_template_clear_module_cache( $mid ) ;

		return true ;
	}

	function links_message_append_onupdate( &$module_obj , &$log )
	{
		if( is_array( @$GLOBALS['msgs'] ) ) {
			foreach( $GLOBALS['msgs'] as $message ) {
				$log->add( strip_tags( $message ) ) ;
			}
		}

		// use mLog->addWarning() or mLog->addError() if necessary
	}

}

